]> dgit.raspbian.org Git - gnome-shell.git/commitdiff
popupMenu: do not overflow the currentItems
authorAlban Browaeys <prahal@yahoo.com>
Sun, 20 May 2012 21:36:27 +0000 (23:36 +0200)
committerGiovanni Campagna <gcampagna@src.gnome.org>
Tue, 5 Jun 2012 14:28:40 +0000 (16:28 +0200)
Do not overflow currentItems array. If the Menu section is filled
via model items-changed callback the position in the model passed to
the RemoteMenu _modelChanged can be a to be added asynchronously
action-added. Thus the item does not yet exists in the currentItems.

https://bugzilla.gnome.org/show_bug.cgi?id=676447

js/ui/popupMenu.js

index 368442db46950e786db5e6897899f8fc56fcb04e..9efb6f74da0fd4f96537efc28eaa20c8500246f5 100644 (file)
@@ -1920,7 +1920,7 @@ const RemoteMenu = new Lang.Class({
         while (k0 < currentItems.length && currentItems[k0]._ignored)
             k0++;
         // find the right menu item matching the model item
-        for (j0 = 0; j0 < position; j0++, k0++) {
+        for (j0 = 0; k0 < currentItems.length && j0 < position; j0++, k0++) {
             if (currentItems[k0]._ignored)
                 k0++;
         }
@@ -1930,7 +1930,7 @@ const RemoteMenu = new Lang.Class({
             for (k = k0; k < currentItems.length; k++)
                 currentItems[k].destroy();
         } else {
-            for (j = j0, k = k0; j < j0 + removed; j++, k++) {
+            for (j = j0, k = k0; k < currentItems.length && j < j0 + removed; j++, k++) {
                 currentItems[k].destroy();
 
                 if (currentItems[k]._ignored)